<?php
/**
 * @brief Klasa encyjna NodeAffiliation
 * 
 * Obiekty tej klasy reprezentują przynależność lokalizacji do jednostek rynkowych. 
 * 
 */
class Application_Model_NodeAffiliation
{

        protected $_MarketEntity; /*!< Identyfiaktor jednostki rynkowej.*/
        protected $_NetworkNode_id; /*!< Identyfikator lokalizacji. */ 
        protected $_NetworkNodeName; /*!< Nazwa lokalizacji. */

        /**
        * @brief Metoda zwracająca identyfiaktor jednostki rynkowej.
         *
         * @return string 
         */
        public function getMarketEntity() {
            return $this->_MarketEntity;
        }
        /**
         * @brief Metoda do ustawiania identyfiaktora jednostki rynkowej.
         *
         * @param string $_MarketEntity 
         */
        public function setMarketEntity($_MarketEntity) {
            $this->_MarketEntity = $_MarketEntity;
        }
        
        /**
         * @brief Metoda zwracająca identyfikator lokalizacji
         *
         * @return int
         */
        public function getNetworkNode_id() {
            return $this->_NetworkNode_id;
        }
        
        /**
         * @brief Metoda do ustawiania identyfikatora lokalizacji.
         *
         * @param int $_NetworkNode_id 
         */
        public function setNetworkNode_id($_NetworkNode_id) {
            $this->_NetworkNode_id = $_NetworkNode_id;
        }
        
        /**
         * @brief Metoda zwracająca nazwę lokalizacji.
         *
         * @return string
         */
        public function getNodeName()
        {
            if(empty($this->_NetworkNodeName)){
                $this->setNodeName();
            }
            return $this->_NetworkNodeName;
        }
        /**
         * @brief Metoda do ustawiania typu lokalizacji.
         * 
         * Nazwa jest pobierana z bazy danych za pomocą klasy mapującjącej
         * Application_Model_NetworkNodeMapper.
         * 
         * @return string 
         */
        public function setNodeName()
        {
            if(empty($this->_NetworkNode_id)){
                throw new Exception('Pusty obiekt!');
            }
            
            $mapper = new Application_Model_NetworkNodeMapper();
            $node = $mapper->find($this->_NetworkNode_id);
            
            if(empty($node)){
                $this->_NetworkNodeName =  'Brak obiektu!';
                return;
            } 
                
            $this->_NetworkNodeName = $node->getName();
            
            
            
        }

}

